package com.llsydn.data.innerfile;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.llsydn.hello.R;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * @author lilinshen
 * @title 手机内部file存储
 * @description 请填写相关描述
 * @date 2018/9/25 11:10
 */
public class InnerFileActivity extends AppCompatActivity {

    private Button btn_if_save;
    private Button btn_if_read;
    private ImageView iv_if;

    /**
     * 应用运行需要的一些较大的数据或图片可以用文件保存的手机内部
     * 文件类型: 任意
     * 数据保存的路径: /data/data/projectPackage/files/
     * 可以设置数据只能是当前应用读取, 而别的应用不可以
     * 应用卸载时会删除此数据
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_inner_file);

        btn_if_save = findViewById(R.id.btn_if_save);
        btn_if_read = findViewById(R.id.btn_if_read);
        iv_if = findViewById(R.id.iv_if);

        btn_if_save.setOnClickListener((v) -> {
            save(v);
        });

        btn_if_read.setOnClickListener((v) -> {
            read(v);
        });
    }

    /**
     * 保存文件
     *
     * @param view
     */
    public void save(View view) {
        //1.得到inputStream对象
        try {
            AssetManager assetManager = getAssets();
            InputStream is = assetManager.open("logo.png");

            //2.得到outputStream对象
            FileOutputStream fos = openFileOutput("logo.png", Context.MODE_PRIVATE);
            //3.边读边写
            byte[] buffer = new byte[1024];
            int len = -1;
            while ((len = is.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
            }
            fos.close();
            is.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

        //4.提示
        Toast.makeText(InnerFileActivity.this, "保存完成！", Toast.LENGTH_SHORT).show();
    }

    /**
     * 读取文件
     *
     * @param view
     */
    public void read(View view) {
        //1.得到文件路径（/data/data/packageName/files/）
        String filePath = getFilesDir().getAbsolutePath();
        String imagePath = filePath + "/logo.png";
        //2.读取加载图片
        Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
        //3.设置到imageView中显示
        iv_if.setImageBitmap(bitmap);
    }
}
